home *** CD-ROM | disk | FTP | other *** search
Java Source | 1997-07-13 | 4.3 KB | 138 lines |
- /*
- * Copyright (c) 1995-1997 Sun Microsystems, Inc. All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software
- * and its documentation for NON-COMMERCIAL purposes and without
- * fee is hereby granted provided that this copyright notice
- * appears in all copies. Please refer to the file "copyright.html"
- * for further important copyright and licensing information.
- *
- * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
- * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
- * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
- */
- import java.applet.*;
- import java.awt.*;
-
- public class SoundExample extends Applet {
- SoundList soundList;
- String onceFile = "bark.au";
- String loopFile = "train.au";
- AudioClip onceClip;
- AudioClip loopClip;
-
- Button playOnce;
- Button startLoop;
- Button stopLoop;
- Button reload;
-
- boolean looping = false;
-
- public void init() {
- playOnce = new Button("Bark!");
- add(playOnce);
-
- startLoop = new Button("Start sound loop");
- stopLoop = new Button("Stop sound loop");
- stopLoop.disable();
- add(startLoop);
- add(stopLoop);
-
- reload = new Button("Reload sounds");
- add(reload);
-
- validate();
-
- startLoadingSounds();
- }
-
- void startLoadingSounds() {
- //Start asynchronous sound loading.
- soundList = new SoundList(this, getCodeBase());
- soundList.startLoading(loopFile);
- soundList.startLoading(onceFile);
- }
-
- public void stop() {
- //If one-time sound were long, we'd stop it here, too.
- if (looping) {
- loopClip.stop(); //Stop the sound loop.
- }
- }
-
- public void start() {
- if (looping) {
- loopClip.loop(); //Restart the sound loop.
- }
- }
-
- public boolean action(Event event, Object arg) {
- //PLAY BUTTON
- if (event.target == playOnce) {
- if (onceClip == null) {
- //Try to get the AudioClip.
- onceClip = soundList.getClip(onceFile);
- }
-
- if (onceClip != null) { //If the sound is loaded:
- onceClip.play(); //Play it once.
- showStatus("Playing sound " + onceFile + ".");
- } else {
- showStatus("Sound " + onceFile + " not loaded yet.");
- }
- return true;
- }
-
- //START LOOP BUTTON
- if (event.target == startLoop) {
- if (loopClip == null) {
- //Try to get the AudioClip.
- loopClip = soundList.getClip(loopFile);
- }
-
- if (loopClip != null) { //If the sound is loaded:
- looping = true;
- loopClip.loop(); //Start the sound loop.
- stopLoop.enable(); //Enable stop button.
- startLoop.disable(); //Disable start button.
- showStatus("Playing sound " + loopFile + " continuously.");
- } else {
- showStatus("Sound " + loopFile + " not loaded yet.");
- }
- return true;
- }
-
- //STOP LOOP BUTTON
- if (event.target == stopLoop) {
- if (looping) {
- looping = false;
- loopClip.stop(); //Stop the sound loop.
- startLoop.enable(); //Enable start button.
- stopLoop.disable(); //Disable stop button.
- }
- showStatus("Stopped playing sound " + loopFile + ".");
- return true;
- }
-
- //RELOAD BUTTON
- if (event.target == reload) {
- if (looping) { //Stop the sound loop.
- looping = false;
- loopClip.stop();
- startLoop.enable(); //Enable start button.
- stopLoop.disable(); //Disable stop button.
- }
- loopClip = null; //Reset AudioClip to null.
- onceClip = null; //Reset AudioClip to null.
- startLoadingSounds();
- showStatus("Reloading all sounds.");
- return true;
- }
-
- return false; //some event I don't know about...
- }
- }
-